1. Field of the Invention
Embodiments of the present invention generally relate to managing computing resources. More specifically, embodiments of the invention provide a virtual template service used to dynamically control the configuration and/or state of multiple data center systems simultaneously.
2. Description of the Related Art
Generally, in a virtualized computing environment, such as a data center hosting thousands of computing servers, virtual machine instances (VMs) are configured to run on one or more host computers. Each virtual machine uses CPU and memory resources of a host computer and runs its own operating system and application programs. Doing so allows each virtual machine to appear to operate as a separate, stand-alone computing system. An administrator of the virtualized environment can designate the amount of CPU and memory resources provisioned for each of the virtual machines on a host computer. In some virtualized environments, administrative tools are used to start, stop, and configure each virtual machine instance individually. Further, administrative tools may monitor resource usage on different host computers and provide load-balancing services at a level of virtual machine instances. Such software migrates virtual machines from one host computer to another, e.g., from a busy host computer to one that has excess capacity.
While managing the virtual and physical computing systems, along with the associated networking and storage systems hardware in a data center, it is often necessary to do a mass configuration update or to individually send the same command to multiple devices (whether physical or virtual devices). For example, enterprise solutions/applications today often include multiple virtual machines configured with common characteristics, e.g., a group of virtual machines may share a common operating system (OS), networking configuration, e.g., subnet, domain, and DNS assignments, and applications.
To provide a web-service, for example, one group of VMs having one configuration could provide web servers, while a second group could provide application servers, and a third could provide database systems. Further, each group could be configured to be part of a distinct subnet within the data center network. If the subnet needs to be changed for one of these groups, however, each machine in that group must be reconfigured individually or a one-off script composed to make the change to the affected group. Similarly, assume the web-server application is upgraded and requires changes to the configuration of the virtualized CPUs in the second group of VMs (e.g., to provide more dedicated processing capabilities). In such a case, each virtual machine in the web-server group would have to be reconfigured individually or a scripts written to perform this specific operation. A variety of other configuration requirements or administrative operations frequently need to be performed across multiple virtual machines, hypervisors managing the virtual machines on a given host, or the configuration of the hosts themselves. A similar issue arises for other data center computing resources. For example, a group of networking switches (physical or virtual) or other networking infrastructure within a data center may need to be updated with the same configuration changes.
In each of these cases, a variety of administrative applications may be used to individually configure (and reconfigure) each virtual machine, or other data center computing resource. However, doing so can require requires substantial time to complete a simple change.